package cn.gemiman.daoyi.module.cms.service.appsite;

import cn.gemiman.daoyi.framework.common.pojo.PageResult;
import cn.gemiman.daoyi.module.cms.controller.admin.appsite.vo.AppSitePageReqVO;
import cn.gemiman.daoyi.module.cms.controller.admin.appsite.vo.AppSiteSaveReqVO;
import cn.gemiman.daoyi.module.cms.controller.admin.appsitecomment.vo.AppSiteCommentUpdateStatusReqVO;
import cn.gemiman.daoyi.module.cms.controller.app.appsite.vo.AppAppSiteStatisticRespVO;
import cn.gemiman.daoyi.module.cms.dal.dataobject.appsite.AppSiteDO;
import jakarta.validation.Valid;

/**
 * 站点 Service 接口
 *
 * @author 道一源码
 */
public interface AppSiteService {

    /**
     * 创建站点
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createAppSite(@Valid AppSiteSaveReqVO createReqVO);

    /**
     * 更新站点
     *
     * @param updateReqVO 更新信息
     */
    void updateAppSite(@Valid AppSiteSaveReqVO updateReqVO);

    /**
     * 更新站点状态
     *
     * @param updateReqVO 更新信息
     */
    void updateAppSiteStatus(AppSiteCommentUpdateStatusReqVO updateReqVO);

    /**
     * 更新站点审核状态
     *
     * @param updateReqVO 更新信息
     */
    void updateAppSiteApproveStatus(AppSiteCommentUpdateStatusReqVO updateReqVO);

    /**
     * 删除站点
     *
     * @param id 编号
     */
    void deleteAppSite(Long id);

    /**
     * 获得站点
     *
     * @param id 编号
     * @return 站点
     */
    AppSiteDO getAppSite(Long id);

    /**
     * 获得站点分页
     *
     * @param pageReqVO 分页查询
     * @return 站点分页
     */
    PageResult<AppSiteDO> getAppSitePage(AppSitePageReqVO pageReqVO);

    /**
     * 获得站点
     *
     * @param appId 应用编号
     * @return 站点
     */
    AppSiteDO getAppSite(String appId);

    /**
     * 获取数据统计
     *
     * @param appId 应用编号
     * @return 数据统计
     */
    AppAppSiteStatisticRespVO getStatistic(String appId);

    Long addAppSiteView(String appId);
}
